OSDN Git Service

Goemon is now cut down weak shoot/throwing and drop zantetsuken 100%
authordis- <dis-@0568b783-4c39-0410-ac80-bf13821ea2a2>
Fri, 7 Jun 2013 13:41:05 +0000 (13:41 +0000)
committerdis- <dis-@0568b783-4c39-0410-ac80-bf13821ea2a2>
Fri, 7 Jun 2013 13:41:05 +0000 (13:41 +0000)
lib/edit/r_info.txt
src/cmd1.c
src/cmd2.c
src/externs.h
src/xtra2.c

index 5ab63b4..a162514 100644 (file)
@@ -8795,7 +8795,7 @@ N:505:
 E:Ishikawa Goemon
 G:p:W
 I:120:13d113:20:70:50
-W:33:7:0:2000:0:0
+W:36:7:0:2000:0:0
 B:SLASH:HURT:9d1
 B:SLASH:HURT:6d5
 B:SLASH:HURT:25d1
index 28e4ad4..183ce20 100644 (file)
  * Determine if the player "hits" a monster (normal combat).
  * Note -- Always miss 5%, always hit 5%, otherwise random.
  */
-bool test_hit_fire(int chance, int ac, int vis)
+bool test_hit_fire(int chance, monster_type *m_ptr, int vis, char* o_name)
 {
-       int k;
+       int k, ac;
+       monster_race *r_ptr = &r_info[m_ptr->r_idx];
+       
+       ac = r_ptr->ac;
+       if(m_ptr->r_idx == MON_GOEMON && !MON_CSLEEP(m_ptr)) ac *= 3;
 
        /* Percentile dice */
        k = randint0(100);
@@ -41,7 +45,18 @@ bool test_hit_fire(int chance, int ac, int vis)
        if (!vis) chance = (chance + 1) / 2;
 
        /* Power competes against armor */
-       if (randint0(chance) < (ac * 3 / 4)) return (FALSE);
+       if (randint0(chance) < (ac * 3 / 4))
+       {
+               if(m_ptr->r_idx == MON_GOEMON && !MON_CSLEEP(m_ptr))
+               {
+                       char m_name[80];
+                       
+                       /* Extract monster name */
+                       monster_desc(m_name, m_ptr, 0);
+                       msg_format(_("%s¤Ï%s¤ò»Â¤ê¼Î¤Æ¤¿¡ª", "%s cuts down %s!"), m_name, o_name);
+               }
+               return (FALSE);
+       }
 
        /* Assume hit */
        return (TRUE);
index c6af4a1..a4d38c3 100644 (file)
@@ -3738,7 +3738,7 @@ void do_cmd_fire_aux(int item, object_type *j_ptr)
                        }
 
                        /* Did we hit it (penalize range) */
-                       if (test_hit_fire(chance - cur_dis, armour, m_ptr->ml))
+                       if (test_hit_fire(chance - cur_dis, m_ptr, m_ptr->ml, o_name))
                        {
                                bool fear = FALSE;
                                int tdam = tdam_base;
@@ -4424,7 +4424,7 @@ bool do_cmd_throw_aux(int mult, bool boomerang, int shuriken)
                        hit_body = TRUE;
 
                        /* Did we hit it (penalize range) */
-                       if (test_hit_fire(chance - cur_dis, r_ptr->ac, m_ptr->ml))
+                       if (test_hit_fire(chance - cur_dis, m_ptr, m_ptr->ml, o_name))
                        {
                                bool fear = FALSE;
 
index 4bde58f..c872243 100644 (file)
@@ -699,7 +699,7 @@ extern void disturb(int stop_search, int flush_output);
 extern void glow_deep_lava_and_bldg(void);
 
 /* cmd1.c */
-extern bool test_hit_fire(int chance, int ac, int vis);
+extern bool test_hit_fire(int chance, monster_type *m_ptr, int vis, char* o_name);
 extern bool test_hit_norm(int chance, int ac, int vis);
 extern s16b critical_shot(int weight, int plus_ammo, int plus_bow, int dam);
 extern s16b critical_norm(int weight, int plus, int dam, s16b meichuu, int mode);
index 77d92ea..e0fd7cb 100644 (file)
@@ -1367,7 +1367,7 @@ msg_print("
 
                case MON_GOEMON:
                        a_idx = ART_ZANTETSU;
-                       chance = 75;
+                       chance = 100;
                        break;
 
                case MON_HAGEN: