X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fracial.c;h=cd6ab9f73938fe3e458099d811f86d4f9d8dfa55;hb=577a67eed110384d77b8d12e4a15f55a845c71cf;hp=7ce3b7ed147127766d9d156ff4eaab015ea6ec3f;hpb=f5310c158052385a30b6ff366642891e0070473f;p=hengband%2Fhengband.git diff --git a/src/racial.c b/src/racial.c index 7ce3b7ed1..cd6ab9f73 100644 --- a/src/racial.c +++ b/src/racial.c @@ -11,21 +11,11 @@ */ #include "angband.h" +#include "cmd-magiceat.h" +#include "cmd-zapwand.h" +#include "cmd-pet.h" -/*! - * @brief 対象のアイテムが矢やクロスボウの矢の材料になるかを返す。/ - * Hook to determine if an object is contertible in an arrow/bolt - * @param o_ptr オブジェクトの構造体の参照ポインタ。 - * @return 材料にできるならTRUEを返す - */ -static bool item_tester_hook_convertible(object_type *o_ptr) -{ - if((o_ptr->tval==TV_JUNK) || (o_ptr->tval==TV_SKELETON)) return TRUE; - - if ((o_ptr->tval == TV_CORPSE) && (o_ptr->sval == SV_SKELETON)) return TRUE; - /* Assume not */ - return (FALSE); -} +#include "object-hook.h" /*! * @brief レイシャル「弾/矢の製造」処理 / do_cmd_cast calls this function if the player's class is 'archer'. @@ -115,7 +105,7 @@ static bool do_cmd_archer(void) q_ptr = &forge; /* Hack -- Give the player some small firestones */ - object_prep(q_ptr, lookup_kind(TV_SHOT, m_bonus(1, p_ptr->lev) + 1)); + object_prep(q_ptr, lookup_kind(TV_SHOT, (OBJECT_SUBTYPE_VALUE)m_bonus(1, p_ptr->lev) + 1)); q_ptr->number = (byte)rand_range(15,30); object_aware(q_ptr); object_known(q_ptr); @@ -139,7 +129,7 @@ static bool do_cmd_archer(void) /**********Create arrows*********/ else if (ext == 2) { - int item; + OBJECT_IDX item; cptr q, s; s16b slot; @@ -166,7 +156,7 @@ static bool do_cmd_archer(void) q_ptr = &forge; /* Hack -- Give the player some small firestones */ - object_prep(q_ptr, lookup_kind(TV_ARROW, m_bonus(1, p_ptr->lev)+ 1)); + object_prep(q_ptr, lookup_kind(TV_ARROW, (OBJECT_SUBTYPE_VALUE)m_bonus(1, p_ptr->lev)+ 1)); q_ptr->number = (byte)rand_range(5, 10); object_aware(q_ptr); object_known(q_ptr); @@ -198,7 +188,7 @@ static bool do_cmd_archer(void) /**********Create bolts*********/ else if (ext == 3) { - int item; + OBJECT_IDX item; cptr q, s; s16b slot; @@ -225,7 +215,7 @@ static bool do_cmd_archer(void) q_ptr = &forge; /* Hack -- Give the player some small firestones */ - object_prep(q_ptr, lookup_kind(TV_BOLT, m_bonus(1, p_ptr->lev)+1)); + object_prep(q_ptr, lookup_kind(TV_BOLT, (OBJECT_SUBTYPE_VALUE)m_bonus(1, p_ptr->lev)+1)); q_ptr->number = (byte)rand_range(4, 8); object_aware(q_ptr); object_known(q_ptr); @@ -263,7 +253,7 @@ static bool do_cmd_archer(void) */ bool gain_magic(void) { - int item; + OBJECT_IDX item; PARAMETER_VALUE pval; int ext = 0; cptr q, s; @@ -318,7 +308,7 @@ bool gain_magic(void) if (o_ptr->tval == TV_ROD) { - p_ptr->magic_num2[o_ptr->sval + ext] += o_ptr->number; + p_ptr->magic_num2[o_ptr->sval + ext] += (MAGIC_NUM2)o_ptr->number; if (p_ptr->magic_num2[o_ptr->sval + ext] > 99) p_ptr->magic_num2[o_ptr->sval + ext] = 99; } else @@ -334,7 +324,7 @@ bool gain_magic(void) gain_num = (gain_num/3 + randint0(gain_num/3)) / 256; if (gain_num < 1) gain_num = 1; } - p_ptr->magic_num2[o_ptr->sval + ext] += gain_num; + p_ptr->magic_num2[o_ptr->sval + ext] += (MAGIC_NUM2)gain_num; if (p_ptr->magic_num2[o_ptr->sval + ext] > 99) p_ptr->magic_num2[o_ptr->sval + ext] = 99; p_ptr->magic_num1[o_ptr->sval + ext] += pval * 0x10000; if (p_ptr->magic_num1[o_ptr->sval + ext] > 99 * 0x10000) p_ptr->magic_num1[o_ptr->sval + ext] = 99 * 0x10000; @@ -602,7 +592,7 @@ typedef struct power_desc_type power_desc_type; */ struct power_desc_type { - char name[40]; + char name[80]; PLAYER_LEVEL level; int cost; int stat; @@ -1001,11 +991,11 @@ static bool cmd_racial_power_aux(s32b command) if (command == -3) { if (!get_aim_dir(&dir)) return FALSE; - (void)fire_ball_hide(GF_CONTROL_LIVING, dir, p_ptr->lev, 0); + (void)fire_ball_hide(GF_CHARM_LIVING, dir, p_ptr->lev, 0); } else if (command == -4) { - project_hack(GF_CONTROL_LIVING, p_ptr->lev); + project_hack(GF_CHARM_LIVING, p_ptr->lev); } break; } @@ -1027,7 +1017,7 @@ static bool cmd_racial_power_aux(s32b command) case CLASS_BARD: { /* Singing is already stopped */ - if (!p_ptr->magic_num1[0] && !p_ptr->magic_num1[1]) return FALSE; + if (!SINGING_SONG_EFFECT(p_ptr) && !INTERUPTING_SONG_EFFECT(p_ptr)) return FALSE; stop_singing(); p_ptr->energy_use = 10; @@ -1233,7 +1223,7 @@ static bool cmd_racial_power_aux(s32b command) msg_format("You breathe %s.",((type == GF_NETHER) ? "nether" : "fire")); #endif - fire_ball(type, dir, plev * 3, -(plev / 15) - 1); + fire_breath(type, dir, plev * 3, (plev / 15) + 1); break; } case MIMIC_VAMPIRE: @@ -1263,7 +1253,7 @@ static bool cmd_racial_power_aux(s32b command) msg_print(_("あなたはニヤリとして牙をむいた...", "You grin and bare your fangs...")); dummy = plev + randint1(plev) * MAX(1, plev / 10); /* Dmg */ - if (drain_life(dir, dummy)) + if (hypodynamic_bolt(dir, dummy)) { if (p_ptr->food < PY_FOOD_FULL) /* No heal if we are "full" */ @@ -1327,9 +1317,7 @@ static bool cmd_racial_power_aux(s32b command) case RACE_HALF_TROLL: msg_print(_("うがぁぁ!", "RAAAGH!")); - (void)set_afraid(0); - (void)set_shero(10 + randint1(plev), FALSE); - (void)hp_player(30); + (void)berserk(10 + randint1(plev)); break; case RACE_AMBERITE: @@ -1342,27 +1330,15 @@ static bool cmd_racial_power_aux(s32b command) { msg_print(_("あなたは「パターン」を心に描いてその上を歩いた...", "You picture the Pattern in your mind and walk it...")); - (void)set_poisoned(0); - (void)set_image(0); - (void)set_stun(0); - (void)set_cut(0); - (void)set_blind(0); - (void)set_afraid(0); - (void)do_res_stat(A_STR); - (void)do_res_stat(A_INT); - (void)do_res_stat(A_WIS); - (void)do_res_stat(A_DEX); - (void)do_res_stat(A_CON); - (void)do_res_stat(A_CHR); + (void)true_healing(0); + (void)restore_all_status(); (void)restore_level(); } break; case RACE_BARBARIAN: msg_print(_("うぉぉおお!", "Raaagh!")); - (void)set_afraid(0); - (void)set_shero(10 + randint1(plev), FALSE); - (void)hp_player(30); + (void)berserk(10 + randint1(plev)); break; case RACE_HALF_OGRE: @@ -1555,8 +1531,7 @@ static bool cmd_racial_power_aux(s32b command) ratial_stop_mouth(); msg_format(_("あなたは%sのブレスを吐いた。", "You breathe %s."), Type_desc); - fire_ball(Type, dir, plev * 2, - -(plev / 15) - 1); + fire_breath(Type, dir, plev * 2, (plev / 15) + 1); } break; @@ -1617,7 +1592,7 @@ static bool cmd_racial_power_aux(s32b command) msg_print(_("あなたはニヤリとして牙をむいた...", "You grin and bare your fangs...")); dummy = plev + randint1(plev) * MAX(1, plev / 10); /* Dmg */ - if (drain_life(dir, dummy)) + if (hypodynamic_bolt(dir, dummy)) { if (p_ptr->food < PY_FOOD_FULL) /* No heal if we are "full" */ @@ -1662,7 +1637,7 @@ static bool cmd_racial_power_aux(s32b command) msg_format("You breathe %s.",((type == GF_NETHER) ? "nether" : "fire")); #endif - fire_ball(type, dir, plev * 3, -(plev / 15) - 1); + fire_breath(type, dir, plev * 3, (plev / 15) + 1); } break; @@ -2093,7 +2068,7 @@ void do_cmd_racial_power(void) power_desc[num++].number = -1; break; case MIMIC_VAMPIRE: - strcpy(power_desc[num].name, _("生命力吸収", "Drain Life")); + strcpy(power_desc[num].name, _("吸血", "Vampiric Drain")); power_desc[num].level = 2; power_desc[num].cost = 1 + (lvl / 3); power_desc[num].stat = A_CON; @@ -2291,7 +2266,7 @@ void do_cmd_racial_power(void) power_desc[num++].number = -1; break; case RACE_VAMPIRE: - strcpy(power_desc[num].name, _("生命力吸収", "Drain Life")); + strcpy(power_desc[num].name, _("吸血", "Vampiric Drain")); power_desc[num].level = 2; power_desc[num].cost = 1 + (lvl / 3); power_desc[num].stat = A_CON; @@ -2442,7 +2417,7 @@ void do_cmd_racial_power(void) if (p_ptr->muta1 & MUT1_VAMPIRISM) { - strcpy(power_desc[num].name, _("吸血ドレイン", "Vampiric Drain")); + strcpy(power_desc[num].name, _("吸血", "Vampiric Drain")); power_desc[num].level = 2; power_desc[num].cost = (1 + (lvl / 3)); power_desc[num].stat = A_CON; @@ -2850,7 +2825,7 @@ if (!repeat_pull(&i) || i<0 || i>=num) { ask = (isupper(choice)); /* Lowercase */ - if (ask) choice = tolower(choice); + if (ask) choice = (char)tolower(choice); /* Extract request */ i = (islower(choice) ? A2I(choice) : -1);