diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm
index 28547653d3b..796cb814850 100644
--- a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm
@@ -723,7 +723,7 @@
/mob/living/carbon/human/proc/wings_toggle()
set name = "Toggle Flight"
- set desc = "Toggle to allow for draining to be prolonged. Turn this on to make it so prey will be knocked out/die while being drained. Can be toggled at any time."
+ set desc = "While flying over open spaces, you will use up some nutrition. If you run out nutrition, you will fall. Additionally, you can't fly if you are too heavy."
set category = "Abilities"
var/mob/living/carbon/human/C = src
@@ -733,6 +733,12 @@
if(C.incapacitated() || C.stat || C.lying || C.stunned || C.weakened || C.paralysis)
to_chat(src, "You cannot fly in this state!")
return
+ if(C.nutrition < 25 && !C.wings_flying) //Don't have any food in you?" You can't fly.
+ to_chat(C, "You lack the nutrition to fly.")
+ return
+ if(C.nutrition > 1000 && !C.wings_flying)
+ to_chat(C, "You have eaten too much to fly! You need to lose some nutrition.")
+ return
C.wings_flying = !C.wings_flying
diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm
index fc7ae98e64d..625df546346 100644
--- a/code/modules/multiz/movement.dm
+++ b/code/modules/multiz/movement.dm
@@ -162,12 +162,26 @@
if(ishuman(src)) //VOREStation Edit Start. Code to see if they have wings.
var/mob/living/carbon/human/H = src
if(H.wings_flying == 1) //Some other checks are done in the wings_toggle proc
+ if(H.nutrition > 10)
+ H.nutrrition -= 10 //You use up 10 nutrition per second of flying above open spaces. If people wanna flap their wings in the hallways, shouldn't penalize them for it.
if(H.incapacitated() || H.stat || H.lying || H.stunned || H.weakened || H.paralysis) //Incap by itself doesn't work, for some reason.
H.stop_flying()
//Just here to see if the person is KO'd, stunned, etc. If so, it'll move onto can_call.
+ else if (H.nutrition > 1000) //Eat too much while flying? Get fat and fall.
+ to_chat(H, "You're too heavy! Your wings give out and you plummit to the ground!")
+ H.stop_flying() //womp womp.
+ else if(H.nutrition < 300 && H.nutrition > 289) //290 would be risky, as metabolism could mess it up. Let's do 289.
+ to_chat(H, "You are starting to get fatigued... You probably have a good minute left in the air, if that. You should get to the ground soon!") //Ticks are, on average, 3 seconds. So this would most likely be 90 seconds, but lets just say 60.
+ H.nutrition -= 10
+ return
+ else if(H.nutrition < 100 && > 89)
+ to_chat(H, "You're seriously fatigued! You need to get to the ground immediately and eat before you fall!")
+ else if(H.nutrition < 20) //Should have listened tto the warnings!
+ to_chat(H, "You lack the strength to keep yourself up in the air...")
+ H.stop_flying()
else
return
- if(H.grabbed_by.len) //If you're grabbed (presumably by someone flying) let's not have you fall.
+ if(H.grabbed_by.len) //If you're grabbed (presumably by someone flying) let's not have you fall. This also allows people to grab onto you while you jump over a railing to prevent you from falling!
return //VOREStation Edit End.
if(can_fall())