mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-27 06:00:23 +01:00
Merge pull request #12912 from Heroman3003/vertical-nom
Adds Vertical Nom trait
This commit is contained in:
@@ -528,3 +528,13 @@
|
||||
/datum/trait/neutral/submit_to_prey/apply(var/datum/species/S,var/mob/living/carbon/human/H)
|
||||
..(S,H)
|
||||
H.verbs |= /mob/living/proc/lend_prey_control
|
||||
|
||||
/datum/trait/neutral/vertical_nom
|
||||
name = "Vertical Nom"
|
||||
desc = "Allows you to consume people from up above."
|
||||
cost = 0
|
||||
custom_only = FALSE
|
||||
|
||||
/datum/trait/neutral/vertical_nom/apply(var/datum/species/S,var/mob/living/carbon/human/H)
|
||||
..(S,H)
|
||||
H.verbs |= /mob/living/proc/vertical_nom
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
/mob/living/proc/vertical_nom()
|
||||
set name = "Nom from Above"
|
||||
set desc = "Allows you to eat people who are below your tile or adjacent one. Requires passability."
|
||||
set category = "Abilities"
|
||||
|
||||
if(stat == DEAD || paralysis || weakened || stunned)
|
||||
to_chat(src, "<span class='notice'>You cannot do that while in your current state.</span>")
|
||||
return
|
||||
|
||||
if(!(src.vore_selected))
|
||||
to_chat(src, "<span class='notice'>No selected belly found.</span>")
|
||||
return
|
||||
|
||||
var/list/targets = list()
|
||||
|
||||
for(var/turf/T in range(1, src))
|
||||
if(isopenspace(T))
|
||||
while(isopenspace(T))
|
||||
T = GetBelow(T)
|
||||
if(T)
|
||||
for(var/mob/living/L in T)
|
||||
if(L.devourable && L.can_be_drop_prey)
|
||||
targets += L
|
||||
|
||||
if(!(targets.len))
|
||||
to_chat(src, "<span class='notice'>No eligible targets found.</span>")
|
||||
return
|
||||
|
||||
var/mob/living/target = tgui_input_list(src, "Please select a target.", "Victim", targets)
|
||||
|
||||
if(!target)
|
||||
return
|
||||
|
||||
to_chat(target, "<span class='warning'>You feel yourself being pulled up by something... Or someone?!</span>")
|
||||
var/starting_loc = target.loc
|
||||
|
||||
if(do_after(src, 50))
|
||||
if(target.loc != starting_loc)
|
||||
to_chat(target, "<span class='warning'>You have interrupted whatever that was...</span>")
|
||||
to_chat(src, "<span class='notice'>They got away.</span>")
|
||||
return
|
||||
if(target.buckled)
|
||||
target.buckled.unbuckle_mob()
|
||||
target.visible_message("<span class='warning'>\The [target] suddenly disappears somewhere above!</span>",\
|
||||
"<span class='danger'>You are dragged above and feel yourself slipping directly into \the [src]'s [vore_selected]!</span>")
|
||||
to_chat(src, "<span class='notice'>You successfully snatch \the [target], slipping them into your [vore_selected].</span>")
|
||||
target.forceMove(src.vore_selected)
|
||||
@@ -3985,6 +3985,7 @@
|
||||
#include "code\modules\vore\eating\slipvore_vr.dm"
|
||||
#include "code\modules\vore\eating\stumblevore_vr.dm"
|
||||
#include "code\modules\vore\eating\transforming_vr.dm"
|
||||
#include "code\modules\vore\eating\vertical_nom_vr.dm"
|
||||
#include "code\modules\vore\eating\vore_vr.dm"
|
||||
#include "code\modules\vore\eating\vorehooks_vr.dm"
|
||||
#include "code\modules\vore\eating\vorepanel_vr.dm"
|
||||
|
||||
Reference in New Issue
Block a user