From 61e1333f887bb5113e96fa9fc36b33b464ed8bd6 Mon Sep 17 00:00:00 2001 From: killer653 Date: Sun, 15 Oct 2017 18:31:28 -0400 Subject: [PATCH] Adds a "finalize" variable and toggle for drain. --- code/modules/mob/living/carbon/human/human.dm | 1 + .../station/station_special_abilities_vr.dm | 29 +++++++++++++++++-- code/modules/vore/eating/living_vr.dm | 1 + 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 2554b44d8b..cb3e74e5ad 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1206,6 +1206,7 @@ verbs |= /mob/living/carbon/human/proc/bloodsuck if(species.can_drain_prey == 1) verbs |= /mob/living/carbon/human/proc/succubus_drain //Succubus drain trait. + verbs |= /mob/living/carbon/human/proc/succubus_drain_finialize verbs |= /mob/living/carbon/human/proc/succubus_drain_lethal //VOREStation Edit End // Rebuild the HUD. If they aren't logged in then login() should reinstantiate it for them. 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 3ad27f7e7c..eb0febc320 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 @@ -485,8 +485,10 @@ C.nutrition = (C.nutrition + (T.nutrition*0.1)) //Just keep draining them. T.nutrition = T.nutrition*0.9 T.eye_blurry += 5 //Some eye blurry just to signify to the prey that they are still being drained. This'll stack up over time, leave the prey a bit more "weakened" after the deed is done. - if(T.nutrition < 100 && stage < 99)//Did they drop below 100 nutrition? If so, immediately jump to stage 99 so it can advance to 100. + if(T.nutrition < 100 && stage < 99 && C.drain_finalized == 1)//Did they drop below 100 nutrition? If so, immediately jump to stage 99 so it can advance to 100. stage = 99 + if(C.drain_finalized != 1 && stage == 99) //Are they not finalizing and the stage hit 100? If so, go back to stage 3 until they finalize it. + stage = 3 if(100) C.nutrition = (C.nutrition + T.nutrition) T.nutrition = 0 //Completely drained of everything. @@ -566,7 +568,7 @@ return C << "You begin to drain [T]'s lifeforce..." T << "An odd sensation flows through your body as you feel your lifeforce slowly being sucked away into [C]!" - if(51 to 99) + if(51 to 98) if(T.stat == DEAD) src << "You suck out the last remaining portion of [T]'s lifeforce." T.apply_damage(500, OXY) //Bit of fluff. @@ -577,9 +579,13 @@ src.attack_log += text("\[[time_stamp()]\] Drained [key_name(T)]") msg_admin_attack("[key_name(T)] was completely drained of all nutrition by [key_name(C)]") return - T.adjustBrainLoss(5) //Will kill them after a short bit! + if(C.drain_finalized == 1 || T.getBrainLoss() < 55) //Let's not kill them with this unless the drain is finalized. This will still stack up to 55, since 60 is lethal. + T.adjustBrainLoss(5) //Will kill them after a short bit! T.eye_blurry += 20 //A lot of eye blurry just to signify to the prey that they are still being drained. This'll stack up over time, leave the prey a bit more "weakened" after the deed is done. More than non-lethal due to their lifeforce being sucked out C.nutrition = (C.nutrition + 25) //Assuming brain damage kills at 60, this gives 300 nutrition. + if(99) + if(C.drain_finalized != 1) + stage = 51 if(100) //They shouldn't survive long enough to get here, but just in case. src << "You suck out the last remaining portion of [T]'s lifeforce." T.apply_damage(500, OXY) //Kill them. @@ -596,3 +602,20 @@ C << "Our draining of [T] has been interrupted!" C.absorbing_prey = 0 return + + +/mob/living/carbon/human/proc/succubus_drain_finialize() + set name = "Drain Finalization" + 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 category = "Abilities" + + var/mob/living/carbon/human/C = src + if(C.drain_finalized == 1) + C.drain_finalized = 0 + C << "You will now finalize draining." + return + + else if(C.drain_finalized == 0) + C.drain_finalized = 1 + C << "You will not finalize draining." + return \ No newline at end of file diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index e56d7f8f63..1a1ba7ff3f 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -18,6 +18,7 @@ var/nif_examine = "There's a certain spark to their eyes" //The examine text of their NIF. This is the default placeholder. var/noisy = 0 // Toggle audible hunger. var/absorbing_prey = 0 // Determines if the person is using the succubus drain or not. See station_special_abilities_vr. + var/drain_finalized = 0 // Determines if the succubus drain will be KO'd/absorbed. Can be toggled on at any time. // // Hook for generic creation of stuff on new creatures