From e6e0f3eee6ca3153cba503f82753bcc223389cd2 Mon Sep 17 00:00:00 2001
From: Vulpias <37509487+Vulpias@users.noreply.github.com>
Date: Sun, 12 Jan 2020 22:45:06 +0100
Subject: [PATCH] Add new traits
Added 1 old trait
and added one new trait which was requested, its a wip and will be changed, now its only a placeholder which can already be used.
---
.../station/station_special_abilities_vr.dm | 162 ++++++++++++++++++
.../species/station/traits_vr/neutral.dm | 22 +++
2 files changed, 184 insertions(+)
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 1540373d68..0b53f6f581 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
@@ -848,3 +848,165 @@
set category = "Abilities"
pass_flags ^= PASSTABLE //I dunno what this fancy ^= is but Aronai gave it to me.
to_chat(src, "You [pass_flags&PASSTABLE ? "will" : "will NOT"] move over tables/railings/trays!")
+
+//succuby bite is back baby
+/mob/living/proc/succubus_bite()
+ set name = "Inject Prey"
+ set desc = "Bite prey and inject them with various toxins."
+ set category = "Abilities"
+
+ if(last_special > world.time)
+ return
+
+ if(!ishuman(src))
+ return //If you're not a human you don't have permission to do this.
+
+ var/mob/living/carbon/human/C = src
+
+ var/obj/item/weapon/grab/G = src.get_active_hand()
+
+ if(!istype(G))
+ to_chat(C, "You must be grabbing a creature in your active hand to bite them.")
+ return
+
+ var/mob/living/carbon/human/T = G.affecting
+
+ if(!istype(T) || T.isSynthetic())
+ to_chat(src, "\The [T] is not able to be bitten.")
+ return
+
+ if(G.state != GRAB_NECK)
+ to_chat(C, "You must have a tighter grip to bite this creature.")
+ return
+
+ var/choice = input(src, "What do you wish to inject?") as null|anything in list("Aphrodisiac", "Numbing", "Paralyzing")
+
+ last_special = world.time + 600
+
+ if(!choice)
+ return
+
+ src.visible_message("[src] moves their head next to [T]'s neck, seemingly looking for something!")
+
+ if(do_after(src, 300, T)) //Thrirty seconds.
+ if(choice == "Aphrodisiac")
+ src.show_message("You sink your fangs into [T] and inject your aphrodisiac!")
+ src.visible_message("[src] sinks their fangs into [T]!")
+ T.bloodstr.add_reagent("succubi_aphrodisiac",100)
+ return 0
+ else if(choice == "Numbing")
+ src.show_message("You sink your fangs into [T] and inject your poison!")
+ src.visible_message("[src] sinks their fangs into [T]!")
+ T.bloodstr.add_reagent("numbing_enzyme",20) //Poisons should work when more units are injected
+ else if(choice == "Paralyzing")
+ src.show_message("You sink your fangs into [T] and inject your poison!")
+ src.visible_message("[src] sinks their fangs into [T]!")
+ T.bloodstr.add_reagent("succubi_paralize",20) //Poisons should work when more units are injected
+ else
+ return //Should never happen
+
+/* //will maybe add something one day
+mob/living/carbon/proc/charmed() //TODO
+ charmed = 1
+ spawn(0)
+ for(var/i = 1,i > 0, i--)
+ src << "... [pick(charmed)] ..."
+ charmed = 0
+*/
+
+/datum/reagent/succubi_aphrodisiac
+ name = "Aphrodisiac"
+ id = "succubi_aphrodisiac"
+ description = "A unknown liquid, it smells sweet"
+ metabolism = REM * 0.8
+ color = "#8A0829"
+ scannable = 0
+
+/datum/reagent/succubi_aphrodisiac/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
+ if(prob(3))
+ M.show_message("You feel funny, and fall in love with the person in front of you")
+ M.say(pick("!blushes", "!moans", "!giggles", "!turns visibly red")) //using mob say so we dont have to define this dumb one time use emote that equates to just blushing -shark
+ //M.charmed() //TODO
+ return
+
+/datum/reagent/succubi_numbing //Using numbing_enzyme instead.
+ name = "Numbing Fluid"
+ id = "succubi_numbing"
+ description = "A unknown liquid, it doesn't smell"
+ metabolism = REM * 0.5
+ color = "#41029B"
+ scannable = 0
+
+/datum/reagent/succubi_numbing/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
+
+
+ M.eye_blurry = max(M.eye_blurry, 10)
+ M.Weaken(2)
+ M.drowsyness = max(M.drowsyness, 20)
+ if(prob(7))
+ M.show_message("You start to feel weakened, your body seems heavy.")
+ return
+
+/datum/reagent/succubi_paralize
+ name = "Paralyzing Fluid"
+ id = "succubi_paralize"
+ description = "A unknown liquid, it doesn't smell"
+ metabolism= REM * 0.5
+ color = "#41029B"
+ scannable = 0
+
+/datum/reagent/succubi_paralize/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) //will first keep it like that. lets see what it changes. if nothing, than I will rework the effect again
+
+ M.Weaken(20)
+ M.eye_blurry = max(M.eye_blurry, 10)
+ if(prob(10))
+ M.show_message("You lose sensation of your body.")
+ return
+
+
+//egglaying
+
+/mob/living/proc/mobegglaying()
+ set name = "Egg laying"
+ set desc = "you can lay Eggs"
+ set category = "Abilities"
+
+ var/mob/living/carbon/human/C = src
+ var layeggs = 0
+ var eggs = 0
+
+ if(C.incapacitated(INCAPACITATION_ALL))
+ to_chat(src, "You cannot lay eggs in this state!")
+ return
+ if(C.nutrition < 200)
+ to_chat(src, "You lack the Nutrition to lay eggs")
+ return
+
+ layeggs++
+
+ if(C.nutrition < 200)
+ eggs++
+
+
+ else if(C.nutrition > 200 && C.nutrition < 600)
+ eggs = 2
+
+
+ else if(C.nutrition >600 && C.nutrition < 800)
+ eggs = 3
+
+
+ if(layeggs == 1)
+ src.visible_message("[src] freezes and vissibly tries to squat down")
+
+ while(eggs > 0)
+ last_special = world.time + 300
+ src.show_message("You lay a egg!")
+ eggs--
+ C.nutrition -= 100
+ var/obj/item/weapon/reagent_containers/food/snacks/egg/E = new(get_turf(src))
+ E.pixel_x = rand(-6,6)
+ E.pixel_y = rand(-6,6)
+ layeggs--
+
+ return
diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm
index 7e1aaa9f25..e355f07a52 100644
--- a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm
+++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm
@@ -118,6 +118,15 @@
H.verbs |= /mob/living/carbon/human/proc/succubus_drain_finalize
H.verbs |= /mob/living/carbon/human/proc/succubus_drain_lethal
+/datum/trait/succubus_bite
+ name = "Succubus bite"
+ desc = "allows you to inject your prey with your posion"
+ cost = 0
+
+/datum/trait/succubus_bite/apply(var/datum/species/S,var/mob/living/carbon/human/H)
+ ..(S,H)
+ H.verbs |= /mob/living/proc/succubus_bite
+
/datum/trait/hard_vore
name = "Brutal Predation"
desc = "Allows you to tear off limbs & tear out internal organs."
@@ -152,3 +161,16 @@
..(S,H)
H.verbs |= /mob/living/proc/glow_toggle
H.verbs |= /mob/living/proc/glow_color
+
+
+/datum/trait/mobegglaying
+ name = "Egg laying"
+ desc = "you can lay eggs"
+ cost = 0
+
+/datum/trait/mobegglaying/apply(var/datum/species/S,var/mob/living/carbon/human/H)
+ ..(S,H)
+ H.verbs |= /mob/living/proc/mobegglaying
+
+
+