Leg actuators for RIGs (#2421)

Preview: https://kama.skullnet.me/index.php/s/GsEdb7q733nO1LK

Okay. These modules allow you to fall from any height without taking damage. As long as your suit is powered and they're enabled, anyways. Secondly, they allow you to leap! Civilian grade allow you to leap 4 tiles, military grade ones (syndicate + ERT commander) allow you to leap 7 tiles and to also grapple people (Vox leap feature).

On top of that, if you middle click on the tile you're on with them selected, you will try to leap upwards. If the tile you're facing above you is a solid (non-open turf, but not dense either), then you will start to climb onto that tile. Civilian grade model isn't powerful enough to jump you there fully, so you gotta spend 4 seconds grappling for your life. Get interrupted in that time, you fall. Military grade models hop you instantly.
This commit is contained in:
skull132
2017-05-29 01:29:35 +03:00
committed by GitHub
parent a5d7d50a69
commit 36dfee27eb
9 changed files with 188 additions and 16 deletions
@@ -49,7 +49,7 @@
if ((O.client && !( O.blinded )))
O.show_message(text("<span class='danger'>[] [failed ? "tried to tackle" : "has tackled"] down []!</span>", src, T), 1)
/mob/living/carbon/human/proc/leap()
/mob/living/carbon/human/proc/leap(var/mob/living/T = null, var/max_range = 4)
set category = "Abilities"
set name = "Leap"
set desc = "Leap at a target and grab them aggressively."
@@ -61,17 +61,18 @@
src << "You cannot leap in your current state."
return
var/list/choices = list()
for(var/mob/living/M in view(6,src))
if(!istype(M,/mob/living/silicon))
choices += M
choices -= src
if (!T)
var/list/choices = list()
for(var/mob/living/M in view(6,src))
if(!istype(M,/mob/living/silicon))
choices += M
choices -= src
var/mob/living/T = input(src,"Who do you wish to leap at?") as null|anything in choices
T = input(src,"Who do you wish to leap at?") as null|anything in choices
if(!T || !src || src.stat) return
if(get_dist(get_turf(T), get_turf(src)) > 4) return
if(get_dist(get_turf(T), get_turf(src)) > max_range) return
if(last_special > world.time)
return
@@ -85,7 +86,10 @@
src.visible_message("<span class='danger'>\The [src] leaps at [T]!</span>")
src.throw_at(get_step(get_turf(T),get_turf(src)), 4, 1, src)
playsound(src.loc, 'sound/voice/shriek1.ogg', 50, 1)
// Only Vox get to shriek. Seriously.
if (isvox(src))
playsound(src.loc, 'sound/voice/shriek1.ogg', 50, 1)
sleep(5)