From fc5f6c084b3d206f57c9c6b7f1a486349bf9e4e3 Mon Sep 17 00:00:00 2001 From: killer653 Date: Mon, 30 Oct 2017 18:12:17 -0400 Subject: [PATCH] Adds a limit to flying. --- .../station/station_special_abilities_vr.dm | 8 +++++++- code/modules/multiz/movement.dm | 16 +++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) 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())