summaryrefslogtreecommitdiff
path: root/src/skills.c
diff options
context:
space:
mode:
authorBardur Arantsson <bardur@scientician.net>2012-06-09 19:47:10 +0200
committerBardur Arantsson <bardur@scientician.net>2012-06-09 19:47:44 +0200
commitd69d91b33a2e833e8b32baa29af22809ade406ba (patch)
treef7c2cbedb10da018471c230d483414f83cdfb8d7 /src/skills.c
parentca63c6bf6fa6d72b93b53cc48d06cc69b3bebe9e (diff)
Lua: Move "Far Reaching Attack" ability to C
Diffstat (limited to 'src/skills.c')
-rw-r--r--src/skills.c44
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;
}
}