diff options
author | Bardur Arantsson <bardur@scientician.net> | 2012-06-09 19:47:10 +0200 |
---|---|---|
committer | Bardur Arantsson <bardur@scientician.net> | 2012-06-09 19:47:44 +0200 |
commit | d69d91b33a2e833e8b32baa29af22809ade406ba (patch) | |
tree | f7c2cbedb10da018471c230d483414f83cdfb8d7 /src/skills.c | |
parent | ca63c6bf6fa6d72b93b53cc48d06cc69b3bebe9e (diff) |
Lua: Move "Far Reaching Attack" ability to C
Diffstat (limited to 'src/skills.c')
-rw-r--r-- | src/skills.c | 44 |
1 files changed, 43 insertions, 1 deletions
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; } } |