Adds new disability, new chemical recipes. (#4727)

Adds a new special disability, love. Love works like monophobia, except that it specifically targets a single living mob and the owner must stay within the presence of that mob. The owner is also more susceptible to that mob's will.

Adds four new chemicals, with the potential for more:

1: Sovereign Glue
When applied to an object, the sovereign glue makes that object sticky. Anyone who picks it up cannot put it back down or have it taken from them unless the hand is severed or the glue removed. May consider other applications upon suggestion.

2: Universal solvent
Specifically counteracts sovereign glue. If more mundane applications can be suggested, this would probably not be a secret chemical. I can't think of any right now however.

3: Philter of Love
When ingested, the subject gains the love disability if they do not already have it.

4: Shapesand
Shapesand can be applied to any object. A counterfeit is created that looks and feels exactly like that item. If someone attempts to use the counterfeit, it collapses into sand (Specifically, in afterattack()).
This commit is contained in:
LordFowl
2018-06-16 15:37:16 -04:00
committed by Erki
parent afd9f19d3c
commit c9014d0eb4
3 changed files with 183 additions and 2 deletions

View File

@@ -90,4 +90,95 @@
new /obj/effect/overlay/temp/bluespace_fissure(get_turf(linked_to))
user.forceMove(get_turf(linked_to))
user.visible_message("<span class='warning'>[user] [slip_in_message].</span>", ignored_mob = user)
user.visible_message("<span class='warning'>[user] [slip_out_message].</span>", "<span class='notice'>...and find your way to the other side.</span>")
user.visible_message("<span class='warning'>[user] [slip_out_message].</span>", "<span class='notice'>...and find your way to the other side.</span>")
/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 = "<span class='notice'>You feel love leave your heart.</span>"
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, "<span class='notice'>You can't help but love [beloved]. You can't bear to be apart from them, and would do anything they say.</span>")
else
to_chat(owner, "<span class='notice'>You feel a brief burst of passion, but it quickly fades.</span>")
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, "<span class='notice'>[mushy]</span>")
/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, "<span class='warning'>You feel sick...</span>")
else
to_chat(owner, "<span class='warning'>You feel really sick at the thought of being seperated from [beloved]!</span>")
addtimer(CALLBACK(owner, /mob/living/carbon.proc/vomit, high_stress), 50) //blood vomit if high stress
if(2)
if(!high_stress)
to_chat(owner, "<span class='warning'>You can't stop shaking...</span>")
owner.dizziness += 20
owner.confused += 20
owner.Jitter(20)
else
to_chat(owner, "<span class='warning'>You feel weak and scared! If only [beloved] was here!</span>")
owner.dizziness += 20
owner.confused += 20
owner.Jitter(20)
owner.adjustHalLoss(50)
if(3, 4)
if(!high_stress)
to_chat(owner, "<span class='warning'>You feel really lonely without [beloved]...</span>")
else
to_chat(owner, "<span class='warning'>You're going mad with loneliness! You need [beloved]!</span>")
owner.hallucination += 20
if(5)
if(!high_stress)
to_chat(owner, "<span class='warning'>Your heart skips a beat. Oh, [beloved]!</span>")
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, "<span class='userdanger'>You feel a stabbing pain in your heart!</span>")
else
to_chat(owner, "<span class='userdanger'>You feel your heart lurching in your chest... Oh, [beloved]!</span>")
owner.adjustOxyLoss(8)

View File

@@ -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"
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("<span class='notice'>[I] begins to glisten with some gluey substance.</span>")
/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("<span class='notice'>A thin shell of glue cracks off of [I].</span>")
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("<span class='notice'>The sand forms into an exact duplicate of [O].</span>")
/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 << "<span class='warning'>As you attempt to use the [src], it crumbles into inert sand!</span>"
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)

View File

@@ -0,0 +1,5 @@
author: LordFowl
delete-after: True
changes:
- rscadd: "Adds a new mental disability - Love."