diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/defines.h | 2 | ||||
-rw-r--r-- | src/skills.c | 44 | ||||
-rw-r--r-- | src/util.pkg | 8 |
3 files changed, 44 insertions, 10 deletions
diff --git a/src/defines.h b/src/defines.h index c1dafdf4..2907d2a2 100644 --- a/src/defines.h +++ b/src/defines.h @@ -611,6 +611,7 @@ #define MKEY_PIERCING 23 #define MKEY_DEATH_TOUCH 100 #define MKEY_GEOMANCY 101 +#define MKEY_REACH_ATTACK 102 /*** Screen Locations ***/ @@ -4486,7 +4487,6 @@ #define HOOK_KEYPRESS 31 #define HOOK_CHAT 32 #define HOOK_MON_SPEAK 33 -#define HOOK_MKEY 34 #define HOOK_BIRTH_OBJECTS 35 #define HOOK_ACTIVATE_DESC 36 #define HOOK_INIT_GAME 37 diff --git a/src/skills.c b/src/skills.c index 1dc65fea..4de0b047 100644 --- a/src/skills.c +++ b/src/skills.c @@ -1102,8 +1102,50 @@ void do_cmd_activate_skill() break; } + case MKEY_REACH_ATTACK: + { + object_type *o_ptr = NULL; + int dir, dy, dx, targetx, targety, max_blows, flags; + + o_ptr = get_object(INVEN_WIELD); + if (o_ptr->tval == TV_POLEARM) + { + msg_print("You will need a long polearm for this!"); + return; + } + + if (!get_rep_dir(&dir)) + { + return; + } + + dy = ddy[dir]; + dx = ddx[dir]; + dy = dy * 2; + dx = dx * 2; + targety = p_ptr->py + dy; + targetx = p_ptr->px + dx; + + max_blows = get_skill_scale(SKILL_POLEARM, p_ptr->num_blow / 2); + if (max_blows == 0) + { + max_blows = 1; + } + + energy_use = energy_use + 200; + + flags = PROJECT_BEAM | PROJECT_KILL; + if (get_skill(SKILL_POLEARM) < 40) + { + flags |= PROJECT_STOP; + } + + project(0, 0, targety, targetx, + max_blows, GF_ATTACK, flags); + + break; + } default: - process_hooks(HOOK_MKEY, "(d)", x_idx); break; } } diff --git a/src/util.pkg b/src/util.pkg index 4e3b6117..33f60a59 100644 --- a/src/util.pkg +++ b/src/util.pkg @@ -426,14 +426,6 @@ typedef unsigned int u32b; */ #define HOOK_MON_SPEAK 33 -/** @def HOOK_MKEY - * @brief Player uses skill.\n - * @param Number x_idx \n the skill to execute. - * @brief Skill index - * @note (see file skills.c) - */ -#define HOOK_MKEY 34 - /** @def HOOK_BIRTH_OBJECTS * @brief Player receives objects at birth. * @note (see file birth.c) |