Files
VOREStation/code/modules/vore/eating/vertical_nom_vr.dm
55a61bc38f up ports incorp and proximity handling (#17106)
* up ports inCorp and proximity handling

* anim size

* bullets no longer hit shadekin

* fix throwing and clicking

* use the proc

* and add the proc

* .

* No moving when you can't move

* fixes portal runtime

* No bonk when throwing at incorporeal entities

* MAR

- I coded in picking yourself up years ago and someone broke it (by adding a lying check). This unbreaks it. Additionally, picking yourself up was made immediate instead of a 0.5 delay since before hitting the U key was slow and doing it this way was quicker. That's not the case anymore.

- Makes attack_hand not happen if the person is incorporeal
- Makes you not  contract touch spread viruses when you click one someone and don't do an interaction (you will now always do an interaction)
- Makes it so you can't mousedrop items while phased.

* no more spreading viruses while phased  / to phased

* F

---------

Co-authored-by: C.L. <killer65311@gmail.com>
2025-03-01 12:09:35 -05:00

48 lines
1.6 KiB
Plaintext

/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.Vore"
if(stat == DEAD || paralysis || weakened || stunned || is_incorporeal())
to_chat(src, span_notice("You cannot do that while in your current state."))
return
if(!(src.vore_selected))
to_chat(src, span_notice("No selected belly found."))
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_notice("No eligible targets found."))
return
var/mob/living/target = tgui_input_list(src, "Please select a target.", "Victim", targets)
if(!target)
return
to_chat(target, span_vwarning("You feel yourself being pulled up by something... Or someone?!"))
var/starting_loc = target.loc
if(do_after(src, 50))
if(target.loc != starting_loc)
to_chat(target, span_vwarning("You have interrupted whatever that was..."))
to_chat(src, span_vnotice("They got away."))
return
if(target.buckled)
target.buckled.unbuckle_mob()
target.visible_message(span_vwarning("\The [target] suddenly disappears somewhere above!"),\
span_vdanger("You are dragged above and feel yourself slipping directly into \the [src]'s [vore_selected]!"))
to_chat(src, span_vnotice("You successfully snatch \the [target], slipping them into your [vore_selected]."))
target.forceMove(src.vore_selected)