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 + + +