Mental Medication Additions (#4648)

The less controversial tweaks
Tweaked the metabolism rate of mental medication to reflect their intended values. Reduced the dosage threshold to suppress traumas to reflect their intended values.

Syringe (drugs) now contains truth serum.

Cardox is now slightly poisonous, and can directly remove phoron from blood when consumed. Cardox can now remove phoron in the air when applied to turfs.

A secure box of loyalty implants, hextrasenil pills, and cardox grenades are now located in the vault.

The vault now contains some misc emergency gear that a head of staff can access in case of a dire situation. Current gear are loyalty implants, expensive cardox grenades, and Hextrasenil pills.
This commit is contained in:
BurgerLUA
2018-05-13 17:39:56 +03:00
committed by Erki
parent e388235cef
commit aad698be53
55 changed files with 1277 additions and 473 deletions
+92 -12
View File
@@ -4,6 +4,7 @@ HEALTH ANALYZER
GAS ANALYZER
MASS SPECTROMETER
REAGENT SCANNER
BREATH ANALYZER
*/
/obj/item/device/healthanalyzer
@@ -19,8 +20,7 @@ REAGENT SCANNER
throw_range = 10
matter = list(DEFAULT_WALL_MATERIAL = 200)
origin_tech = list(TECH_MAGNET = 1, TECH_BIO = 1)
var/mode = 1;
var/mode = 1
/obj/item/device/healthanalyzer/attack(mob/living/M as mob, mob/living/user as mob)
if ( ((CLUMSY in user.mutations) || (DUMB in user.mutations)) && prob(50))
@@ -112,15 +112,6 @@ REAGENT SCANNER
++unknown
if(unknown)
user << "<span class='warning'>Non-medical reagent[(unknown > 1)?"s":""] found in subject's stomach.</span>"
if(C.breathing && C.breathing.total_volume)
var/unknown = 0
for(var/datum/reagent/R in C.breathing.reagent_list)
if(R.scannable)
user << "<span class='notice'>[R.name] found in subject's respitory system.</span>"
else
++unknown
if(unknown)
user << "<span class='warning'>Non-medical reagent[(unknown > 1)?"s":""] found in subject's respitory system.</span>"
if(C.virus2.len)
for (var/ID in C.virus2)
if (ID in virusDB)
@@ -402,4 +393,93 @@ REAGENT SCANNER
var/value = get_value(target)
user.visible_message("\The [user] scans \the [target] with \the [src]")
user.show_message("Price estimation of \the [target]: [value ? value : "N/A"] Credits")
user.show_message("Price estimation of \the [target]: [value ? value : "N/A"] Credits")
/obj/item/device/breath_analyzer
name = "breath analyzer"
desc = "A hand-held breath analyzer that provides a robust amount of information about the subject's repository system."
icon_state = "breath_analyzer"
item_state = "analyzer"
w_class = 2.0
flags = CONDUCT
slot_flags = SLOT_BELT
throwforce = 5
throw_speed = 4
throw_range = 20
matter = list(DEFAULT_WALL_MATERIAL = 30,"glass" = 20)
origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 2)
/obj/item/device/breath_analyzer/attack(mob/living/carbon/human/H as mob, mob/living/user as mob)
if (!istype(H))
to_chat(user,"<span class='warning'>You can't find a way to use the [src] on [H]!</span>")
return
if ( ((CLUMSY in user.mutations) || (DUMB in user.mutations)) && prob(20))
to_chat(user,"<span class='danger'>Your hand slips from clumsiness!</span>")
eyestab(H,user)
to_chat(user,"<span class='danger'>Alert: No breathing detected.</span>")
return
if (!user.IsAdvancedToolUser())
to_chat(user,"<span class='warning'>You don't have the dexterity to do this!</span>")
return
if(user == H && !H.can_eat(src))
return
else if(!H.can_force_feed(user, src))
return
user.setClickCooldown(DEFAULT_QUICK_COOLDOWN)
user.do_attack_animation(H)
user.visible_message("<span class='notice'>[user] is trying to take a breath sample from [H].</span>","<span class='notice'>You gently insert the [src] into [H]'s mouth.</span>")
if (!LAZYLEN(src.other_DNA))
LAZYADD(src.other_DNA, H.dna.unique_enzymes)
src.other_DNA_type = "saliva"
if (!do_after(user, 2 SECONDS, act_target = H))
to_chat(user,"<span class='notice'>You and the target need to be standing still in order to take a breath sample.</span>")
return
user.visible_message("<span class='notice'>[user] takes a breath sample from [H].</span>","<span class='notice'>The [src] clicks as it finishes reading [H]'s breath sample.</span>")
to_chat(user,"<b>Breath Sample Results:</b>")
if(H.stat == DEAD || H.losebreath || !H.breathing)
to_chat(user,"<span class='danger'>Alert: No breathing detected.</span>")
return
to_chat(user,H.getOxyLoss() > 50 ? "<font color='blue'><b>Severe oxygen deprivation detected.</b></font>" : "Subject oxygen levels normal.")
var/obj/item/organ/L = H.internal_organs_by_name["lungs"]
if(istype(L))
to_chat(user,L.is_bruised() ? "<font color='red'><b>Ruptured lung detected.</b></font>" : "Subject lung health normal.")
else
to_chat(user,"<span class='warning'>Subject lung health unknown.</span>")
var/additional_string = "<font color='green'>\[NORMAL\]</font>"
var/bac = H.get_blood_alcohol()
switch(bac)
if(INTOX_JUDGEIMP to INTOX_MUSCLEIMP)
additional_string = "\[LIGHTLY INTOXICATED\]"
if(INTOX_MUSCLEIMP to INTOX_VOMIT)
additional_string = "\[MODERATELY INTOXICATED\]"
if(INTOX_VOMIT to INTOX_BALANCE)
additional_string = "<font color='red'>\[HEAVILY INTOXICATED\]</font>"
if(INTOX_BALANCE to INTOX_DEATH)
additional_string = "<font color='red'>\[ALCOHOL POISONING LIKELY\]</font>"
if(INTOX_DEATH to INFINITY)
additional_string = "<font color='red'>\[DEATH IMMINENT\]</font>"
to_chat(user,"<span class='normal'>Blood Alcohol Content: [round(bac,0.01)] <b>[additional_string]</b></span>")
if(H.breathing && H.breathing.total_volume)
var/unknown = 0
for(var/datum/reagent/R in H.breathing.reagent_list)
if(R.scannable)
to_chat(user,"<span class='notice'>[R.name] found in subject's respitory system.</span>")
else
++unknown
if(unknown)
to_chat(user,"<span class='warning'>Non-medical reagent[(unknown > 1)?"s":""] found in subject's respitory system.</span>")