[MIRROR] Adds hauntium as a reagent with new fun uses. [MDB IGNORE] (#23027)

* Adds hauntium as a reagent with new fun uses. (#77471)

## About The Pull Request
Adds the material hauntium as a reagent, along with bringing some unique
effects with the reagent.

There are a few new ways to get it other than just the camera obscura as
before, such as grinding certain ghostly things.

Unique effects it brings:

- It works in metalgen (I believe the metalgen recipe is still broken as
of making this) to make hauntium infused metalgen.

https://github.com/tgstation/tgstation/assets/58376695/121ca6b2-00b7-4203-bc6a-48976b1af802

- Any object touched by the chem will temporarily have the haunted
effect, letting it teleport around randomly and even attack people.

https://github.com/tgstation/tgstation/assets/58376695/103aeee5-ed3e-4fdd-85e4-ac7338823c46

- If you put it in your body, it hurts your "soul" (soul being heart and
mood)

![image](https://github.com/tgstation/tgstation/assets/58376695/34182a4c-face-4fe7-b170-a7b10122a14d)
...unless you are morbid or undead, in which it gives a slight mood
boost and acts like an addiction-less drug
## Why It's Good For The Game
Hauntium previously was super niche and not very useful other than
making funny haunted toolboxes from it. This expands it's usage and
makes it a lot more interesting. I also know a good few people who have
also wished this was available to use in metalgen and now you can!
## Changelog
🆑
add: Lets you grind things into a hauntium reagent which works similarly
to the solid form but is versatile and has some unique effects.

/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>

* Adds hauntium as a reagent with new fun uses.

---------

Co-authored-by: die_amond <58376695+dieamond13@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
This commit is contained in:
SkyratBot
2023-08-11 23:49:29 -04:00
committed by GitHub
co-authored by Ghom die_amond
parent 8d8eeff690
commit b82a1d0a3a
13 changed files with 82 additions and 6 deletions
@@ -2912,3 +2912,42 @@
if(SPT_PROB(10, seconds_per_tick))
carbon_metabolizer.set_heartattack(TRUE)
/datum/reagent/hauntium
name = "Hauntium"
color = "#3B3B3BA3"
description = "An eerie liquid created by purifying the prescence of ghosts. If it happens to get in your body, it starts hurting your soul." //soul as in mood and heart
taste_description = "evil spirits"
metabolization_rate = 0.75 * REAGENTS_METABOLISM
material = /datum/material/hauntium
ph = 10
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/hauntium/expose_obj(obj/exposed_obj, volume) //gives 15 seconds of haunting effect for every unit of it that touches an object
. = ..()
if(HAS_TRAIT_FROM(exposed_obj, TRAIT_HAUNTED, HAUNTIUM_REAGENT_TRAIT))
return
exposed_obj.make_haunted(HAUNTIUM_REAGENT_TRAIT, "#f8f8ff")
addtimer(CALLBACK(exposed_obj, TYPE_PROC_REF(/atom/movable/, remove_haunted), HAUNTIUM_REAGENT_TRAIT), volume * 20 SECONDS)
/datum/reagent/hauntium/on_mob_metabolize(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
to_chat(affected_mob, span_userdanger("You feel an evil presence inside you!"))
if(affected_mob.mob_biotypes & MOB_UNDEAD || HAS_MIND_TRAIT(affected_mob, TRAIT_MORBID))
affected_mob.add_mood_event("morbid_hauntium", /datum/mood_event/morbid_hauntium, name) //8 minutes of slight mood buff if undead or morbid
else
affected_mob.add_mood_event("hauntium_spirits", /datum/mood_event/hauntium_spirits, name) //8 minutes of mood debuff
/datum/reagent/hauntium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
if(affected_mob.mob_biotypes & MOB_UNDEAD || HAS_MIND_TRAIT(affected_mob, TRAIT_MORBID)) //if morbid or undead,acts like an addiction-less drug
affected_mob.remove_status_effect(/datum/status_effect/jitter)
affected_mob.AdjustStun(-50 * REM * seconds_per_tick)
affected_mob.AdjustKnockdown(-50 * REM * seconds_per_tick)
affected_mob.AdjustUnconscious(-50 * REM * seconds_per_tick)
affected_mob.AdjustParalyzed(-50 * REM * seconds_per_tick)
affected_mob.AdjustImmobilized(-50 * REM * seconds_per_tick)
..()
else
affected_mob.adjustOrganLoss(ORGAN_SLOT_HEART, REM * seconds_per_tick) //1 heart damage per tick
if(SPT_PROB(10, seconds_per_tick))
affected_mob.emote(pick("twitch","choke","shiver","gag"))
..()
@@ -950,3 +950,14 @@
for(var/i in rand(1, created_volume) to created_volume)
new /mob/living/basic/ant(location)
..()
/datum/chemical_reaction/hauntium_solidification
required_reagents = list(/datum/reagent/water/holywater = 10, /datum/reagent/hauntium = 20, /datum/reagent/iron = 1)
mob_react = FALSE
reaction_flags = REACTION_INSTANT
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_UNIQUE | REACTION_TAG_OTHER
/datum/chemical_reaction/hauntium_solidification/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
var/location = get_turf(holder.my_atom)
for(var/i in 1 to created_volume)
new /obj/item/stack/sheet/hauntium(location)