From 104f863a05efd2c6e8336ed4d775a37b5ebb5727 Mon Sep 17 00:00:00 2001 From: Deskull Date: Thu, 24 Jan 2019 13:31:10 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20#37353=20=E9=A8=8E=E5=85=B5?= =?utf8?q?=E3=81=AE=E3=83=AC=E3=82=A4=E3=82=B7=E3=83=A3=E3=83=AB=E3=80=8C?= =?utf8?q?=E8=8D=92=E9=A6=AC=E6=85=A3=E3=82=89=E3=81=97=E3=80=8D=E3=82=92?= =?utf8?q?=20rodeo()=20=E3=81=AB=E5=88=86=E9=9B=A2=E3=80=82=20/=20Separate?= =?utf8?q?=20Cavalry's=20racial=20skill=20"rodeo"=20to=20same=20name=20fun?= =?utf8?q?ction.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/externs.h | 1 + src/racial.c | 38 +------------------------------------- src/spells2.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 37 deletions(-) diff --git a/src/externs.h b/src/externs.h index 7678d5ca6..c71299e84 100644 --- a/src/externs.h +++ b/src/externs.h @@ -1000,6 +1000,7 @@ extern bool demonic_breath(player_type *creature_ptr); extern bool mirror_concentration(player_type *creature_ptr); extern bool sword_dancing(player_type *creature_ptr); extern bool confusing_light(player_type *creature_ptr); +extern bool rodeo(player_type *creature_ptr); /* spells3.c */ extern bool teleport_away(MONSTER_IDX m_idx, POSITION dis, BIT_FLAGS mode); diff --git a/src/racial.c b/src/racial.c index e0f3e5f72..efa4bbe3c 100644 --- a/src/racial.c +++ b/src/racial.c @@ -644,43 +644,7 @@ static bool cmd_racial_power_aux(s32b command) } case CLASS_CAVALRY: { - GAME_TEXT m_name[MAX_NLEN]; - monster_type *m_ptr; - monster_race *r_ptr; - int rlev; - - if (p_ptr->riding) - { - msg_print(_("今は乗馬中だ。", "You ARE riding.")); - return FALSE; - } - if (!do_riding(TRUE)) return TRUE; - m_ptr = &m_list[p_ptr->riding]; - r_ptr = &r_info[m_ptr->r_idx]; - monster_desc(m_name, m_ptr, 0); - msg_format(_("%sに乗った。", "You ride on %s."),m_name); - if (is_pet(m_ptr)) break; - rlev = r_ptr->level; - if (r_ptr->flags1 & RF1_UNIQUE) rlev = rlev * 3 / 2; - if (rlev > 60) rlev = 60+(rlev-60)/2; - if ((randint1(p_ptr->skill_exp[GINOU_RIDING] / 120 + p_ptr->lev * 2 / 3) > rlev) - && one_in_(2) && !p_ptr->inside_arena && !p_ptr->inside_battle - && !(r_ptr->flags7 & (RF7_GUARDIAN)) && !(r_ptr->flags1 & (RF1_QUESTOR)) - && (rlev < p_ptr->lev * 3 / 2 + randint0(p_ptr->lev / 5))) - { - msg_format(_("%sを手なずけた。", "You tame %s."),m_name); - set_pet(m_ptr); - } - else - { - msg_format(_("%sに振り落とされた!", "You have thrown off by %s."),m_name); - rakuba(1,TRUE); - - /* Paranoia */ - /* 落馬処理に失敗してもとにかく乗馬解除 */ - p_ptr->riding = 0; - } - break; + return rodeo(p_ptr); } case CLASS_BERSERKER: { diff --git a/src/spells2.c b/src/spells2.c index a30272f27..fdc9c7b89 100644 --- a/src/spells2.c +++ b/src/spells2.c @@ -12,6 +12,7 @@ */ #include "angband.h" +#include "cmd-pet.h" #include "grid.h" #include "trap.h" #include "monsterrace-hook.h" @@ -5334,3 +5335,48 @@ bool confusing_light(player_type *creature_ptr) stasis_monsters(p_ptr->lev * 4); return TRUE; } + +bool rodeo(player_type *creature_ptr) +{ + GAME_TEXT m_name[MAX_NLEN]; + monster_type *m_ptr; + monster_race *r_ptr; + int rlev; + + if (creature_ptr->riding) + { + msg_print(_("今は乗馬中だ。", "You ARE riding.")); + return FALSE; + } + if (!do_riding(TRUE)) return TRUE; + + m_ptr = &m_list[creature_ptr->riding]; + r_ptr = &r_info[m_ptr->r_idx]; + monster_desc(m_name, m_ptr, 0); + msg_format(_("%sに乗った。", "You ride on %s."), m_name); + + if (is_pet(m_ptr)) return TRUE; + + rlev = r_ptr->level; + + if (r_ptr->flags1 & RF1_UNIQUE) rlev = rlev * 3 / 2; + if (rlev > 60) rlev = 60 + (rlev - 60) / 2; + if ((randint1(creature_ptr->skill_exp[GINOU_RIDING] / 120 + creature_ptr->lev * 2 / 3) > rlev) + && one_in_(2) && !creature_ptr->inside_arena && !creature_ptr->inside_battle + && !(r_ptr->flags7 & (RF7_GUARDIAN)) && !(r_ptr->flags1 & (RF1_QUESTOR)) + && (rlev < creature_ptr->lev * 3 / 2 + randint0(creature_ptr->lev / 5))) + { + msg_format(_("%sを手なずけた。", "You tame %s."), m_name); + set_pet(m_ptr); + } + else + { + msg_format(_("%sに振り落とされた!", "You have thrown off by %s."), m_name); + rakuba(1, TRUE); + + /* Paranoia */ + /* 落馬処理に失敗してもとにかく乗馬解除 */ + creature_ptr->riding = 0; + } + return TRUE; +} \ No newline at end of file -- 2.11.0