diff --git a/code/datums/brain_damage/special_ed.dm b/code/datums/brain_damage/special_ed.dm index 66f9f31f102..a031c23de97 100644 --- a/code/datums/brain_damage/special_ed.dm +++ b/code/datums/brain_damage/special_ed.dm @@ -90,4 +90,95 @@ new /obj/effect/overlay/temp/bluespace_fissure(get_turf(linked_to)) user.forceMove(get_turf(linked_to)) user.visible_message("[user] [slip_in_message].", ignored_mob = user) - user.visible_message("[user] [slip_out_message].", "...and find your way to the other side.") \ No newline at end of file + user.visible_message("[user] [slip_out_message].", "...and find your way to the other side.") + +/datum/brain_trauma/special/love + name = "Hyper-dependency" + desc = "Patient feels lovesick and is emotionally dependent to a specific person." + scan_desc = "severe dependency" + gain_text = "" + lose_text = "You feel love leave your heart." + var/stress = 0 + var/datum/weakref/beloved = null + cure_type = CURE_HYPNOSIS + +/datum/brain_trauma/special/love/on_gain() + ..() + for(var/mob/living/L in view(7,owner)) + if(L != owner) + beloved = L + break + if(beloved) + to_chat(owner, "You can't help but love [beloved]. You can't bear to be apart from them, and would do anything they say.") + + else + to_chat(owner, "You feel a brief burst of passion, but it quickly fades.") + qdel() + +/datum/brain_trauma/special/love/on_life() + ..() + if(check_alone()) + stress = min(stress + 0.5, 100) + if(stress > 10 && (prob(10))) + stress_reaction() + else + stress = max(0, stress - 4) + if(prob(5) && stress > 0) + var/mushy = pick("You feel so good when [beloved] is with you.","You can't believe you ever lived without [beloved].","You'd do anything for [beloved].","[beloved] makes everything better.","You can never let [beloved] leave again.") + to_chat(owner, "[mushy]") + +/datum/brain_trauma/special/love/proc/check_alone() + if(owner.disabilities & BLIND) + return TRUE + + for(var/mob/living/L in view(owner, 7)) + if(L == beloved) + return FALSE + + return TRUE + +/datum/brain_trauma/special/love/proc/stress_reaction() + if(owner.stat != CONSCIOUS) + return + + var/high_stress = (stress > 60) //things get psychosomatic from here on + switch(rand(1,6)) + if(1) + if(!high_stress) + to_chat(owner, "You feel sick...") + else + to_chat(owner, "You feel really sick at the thought of being seperated from [beloved]!") + addtimer(CALLBACK(owner, /mob/living/carbon.proc/vomit, high_stress), 50) //blood vomit if high stress + if(2) + if(!high_stress) + to_chat(owner, "You can't stop shaking...") + owner.dizziness += 20 + owner.confused += 20 + owner.Jitter(20) + else + to_chat(owner, "You feel weak and scared! If only [beloved] was here!") + owner.dizziness += 20 + owner.confused += 20 + owner.Jitter(20) + owner.adjustHalLoss(50) + + if(3, 4) + if(!high_stress) + to_chat(owner, "You feel really lonely without [beloved]...") + else + to_chat(owner, "You're going mad with loneliness! You need [beloved]!") + owner.hallucination += 20 + + if(5) + if(!high_stress) + to_chat(owner, "Your heart skips a beat. Oh, [beloved]!") + owner.adjustOxyLoss(8) + else + if(prob(15) && ishuman(owner)) + var/mob/living/carbon/human/H = owner + var/obj/item/organ/heart/heart = H.internal_organs_by_name["heart"] + heart.take_damage(heart.min_bruised_damage) + to_chat(H, "You feel a stabbing pain in your heart!") + else + to_chat(owner, "You feel your heart lurching in your chest... Oh, [beloved]!") + owner.adjustOxyLoss(8) \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm index b64a5f0cd6b..fd229d16521 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm @@ -531,4 +531,89 @@ id = "philosopher_stone" description = "A mythical compound, rumored to be the catalyst of fantastic reactions." color = "#f4c430" - taste_description = "heavenly knowledge" \ No newline at end of file + taste_description = "heavenly knowledge" + +/datum/reagent/sglue + name = "Sovereign Glue" + id = "sglue" + description = "A very potent adhesive which can be applied to inanimate surfaces." + reagent_state = LIQUID + color = "#EDE8E2" + taste_description = "horses" + +/datum/reagent/sglue/touch_obj(var/obj/O) + if((istype(O, /obj/item) && !istype(O, /obj/item/weapon/reagent_containers)) && (volume > 10*O.w_class)) + var/obj/item/I = O + I.canremove = 0 + I.desc += " It appears to glisten with some gluey substance." + remove_self(10*I.w_class) + I.visible_message("[I] begins to glisten with some gluey substance.") + +/datum/reagent/usolve + name = "Universal Solvent" + id = "usolve" + description = "A very potent solvent which can be applied to inanimate surfaces." + reagent_state = LIQUID + color = "#EDE8E2" + taste_description = "alcohol" + +/datum/reagent/usolve/touch_obj(var/obj/O) + if((istype(O, /obj/item) && !istype(O, /obj/item/weapon/reagent_containers)) && (volume > 10*O.w_class)) + var/obj/item/I = O + I.canremove = initial(I.canremove) + I.desc = initial(I.desc) + I.visible_message("A thin shell of glue cracks off of [I].") + remove_self(10*I.w_class) + +/datum/reagent/shapesand + name = "Shapesand" + id = "shapesand" + description = "A strangely animate clump of sand which can shift its color and consistency." + reagent_state = SOLID + color = "#c2b280" + taste_description = "sand" + +/datum/reagent/shapesand/touch_obj(var/obj/O) + if((istype(O, /obj/item) && !istype(O, /obj/item/weapon/reagent_containers)) && (volume > 10*O.w_class)) + var/obj/item/shapesand/mimic = new /obj/item/shapesand(O.loc) + mimic.name = O.name + mimic.desc = O.desc + mimic.icon = O.icon + mimic.icon_state = O.icon_state + mimic.item_state = O.item_state + mimic.overlays = O.overlays + remove_self(10*O.w_class) + mimic.visible_message("The sand forms into an exact duplicate of [O].") + +/obj/item/shapesand + name = "shapesand" + desc = "A strangely animate clump of sand which can shift its color and consistency." + icon = 'icons/obj/mining.dmi' + w_class = 1.0 + icon_state = "ore_glass" + +/obj/item/shapesand/attack() //can't be used to actually bludgeon things + return 1 + +/obj/item/shapesand/afterattack(atom/A, mob/living/user) + user << "As you attempt to use the [src], it crumbles into inert sand!" + new /obj/item/weapon/ore/glass(get_turf(src)) + qdel(src) + return + +/datum/reagent/love_potion + name = "Philter of Love" + id = "love" + description = "A sickly sweet compound that induces chemical dependency on the first person the subject sees." + reagent_state = LIQUID + color = "#ff69b4" + taste_description = "sickly sweet candy" + +/datum/reagent/love_potion/affect_blood(var/mob/living/carbon/human/H, var/alien, var/removed) + + if(!istype(H)) + return + + var/obj/item/organ/brain/B = H.internal_organs_by_name["brain"] + if(!H.has_trauma_type(/datum/brain_trauma/special/love)) + B.gain_trauma(/datum/brain_trauma/special/love,FALSE) \ No newline at end of file diff --git a/html/changelogs/lordfowl-chems.yml b/html/changelogs/lordfowl-chems.yml new file mode 100644 index 00000000000..75e33b2ae51 --- /dev/null +++ b/html/changelogs/lordfowl-chems.yml @@ -0,0 +1,5 @@ +author: LordFowl +delete-after: True + +changes: + - rscadd: "Adds a new mental disability - Love."