OSDN Git Service

Add new monster's melee effects INERTIA and STUN.
authoriks <iks@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sat, 26 Jan 2013 12:22:04 +0000 (12:22 +0000)
committeriks <iks@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sat, 26 Jan 2013 12:22:04 +0000 (12:22 +0000)
src/defines.h
src/init1.c
src/melee1.c
src/melee2.c
src/monster1.c

index 27295ab..d255c56 100644 (file)
 #define RBE_EXP_VAMP    31
 #define RBE_DR_MANA     32
 #define RBE_SUPERHURT   33
+#define RBE_INERTIA     34
+#define RBE_STUN        35
 
 
 /*** Monster flag values (hard-coded) ***/
index 8c8bce4..1026d5e 100644 (file)
@@ -123,6 +123,8 @@ static cptr r_info_blow_effect[] =
        "EXP_VAMP",
        "DR_MANA",
        "SUPERHURT",
+       "INERTIA",
+       "STUN",
        NULL
 };
 
index babb773..e1d4fc7 100644 (file)
@@ -1126,7 +1126,7 @@ bool make_attack_normal(int m_idx)
                                        if ((o_ptr->xtra4 > 0) && (!object_is_fixed_artifact(o_ptr)))
                                        {
                                                /* Reduce fuel */
-                                               o_ptr->xtra4 -= (250 + randint1(250));
+                                               o_ptr->xtra4 -= (s16b)(250 + randint1(250));
                                                if (o_ptr->xtra4 < 1) o_ptr->xtra4 = 1;
 
                                                /* Notice */
@@ -1781,6 +1781,50 @@ msg_format("%s
 
                                        break;
                                }
+                               case RBE_INERTIA:
+                               {
+                                       /* Take damage */
+                                       get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+
+                                       if (p_ptr->is_dead) break;
+
+                                       /* Decrease speed */
+                                       if (CHECK_MULTISHADOW())
+                                       {
+                                               /* Do nothing */
+                                       }
+                                       else
+                                       {
+                                               if (set_slow((p_ptr->slow + 3 + randint1(rlev / 4)), FALSE))
+                                               {
+                                                       obvious = TRUE;
+                                               }
+                                       }
+
+                                       break;
+                               }
+                               case RBE_STUN:
+                               {
+                                       /* Take damage */
+                                       get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+
+                                       if (p_ptr->is_dead) break;
+
+                                       /* Decrease speed */
+                                       if (p_ptr->resist_sound || CHECK_MULTISHADOW())
+                                       {
+                                               /* Do nothing */
+                                       }
+                                       else
+                                       {
+                                               if (set_stun(p_ptr->stun + 10 + randint1(r_ptr->level / 4)))
+                                               {
+                                                       obvious = TRUE;
+                                               }
+                                       }
+
+                                       break;
+                               }
                        }
 
                        /* Hack -- only one of cut or stun */
index 793690c..5928770 100644 (file)
@@ -1942,6 +1942,14 @@ act = "%s
                                effect_type = BLOW_EFFECT_TYPE_HEAL;
                                break;
 
+                       case RBE_INERTIA:
+                               pt = GF_INERTIA;
+                               break;
+
+                       case RBE_STUN:
+                               pt = GF_SOUND;
+                               break;
+
                        default:
                                pt = 0;
                                break;
index 430f803..8f6b543 100644 (file)
@@ -2857,6 +2857,13 @@ case RBE_DR_MANA:  q = "
                        case RBE_DR_MANA:  q = "drain mana force"; break;
 #endif
 
+#ifdef JP
+                       case RBE_INERTIA:  q = "¸ºÂ®¤µ¤»¤ë"; break;
+                       case RBE_STUN:     q = "Û¯Û°¤È¤µ¤»¤ë"; break;
+#else
+                       case RBE_INERTIA:  q = "slow"; break;
+                       case RBE_STUN:     q = "stun"; break;
+#endif
                }